﻿#include "DxLib.h"
#include "MenuTag.h"
#include "Key.h"
#include "Mouse.h"
#include "Teigi.h"
#include "Loading.h"
#include "Data.h"
#include <stdlib.h>
#include <stdio.h>
#include "GraphHandle.h"


#define PLAYMAINSOUND PlaySoundMem(S_Main , DX_PLAYTYPE_LOOP)
#define DRAWTITLE DrawGraph(100,50,G_Title,TRUE)



//定義
static int Font35=0;		//フォント 35サイズ
static int Font28=0;		//フォント 28サイズ

static int G_Title=0;			//画像　タイトル	

static int C_White=0;		//色　白

static int C_Red=0;			//色　赤

static int S_Pika_n=0;		//音  ピカーン

static int C_Blue;			//色　青	

static int S_Main=0;		   //音　メイン


//dat.dxaが読みこめない時のメッセージ	------------------------------
void Message()
{
	MessageBox(
		NULL ,
        TEXT("dat.dxaを読み込めません。元の場所に戻してください") ,
        TEXT("読み込みエラー") , 
		MB_OK );
}


//画像等ロード-------------------------------------------------------------------------------------------------------------------------------------
void Menu_Init()
{
	GraphHandleInit(MENU);


	//画像　タイトルをロード
	G_Title=GetGraphHandle(MENU , GH_Title);
	
	//もし読みこめないなら
	if(G_Title==-1){

		//エラーを表示
		Message();

		//終了
		exit(1);
	}


	//色を取得
	C_White=GetColor(255,255,255);		//白
	C_Red=GetColor(255,0,0);			    //赤
	C_Blue=GetColor(0,0,255);			   //青

	Font35=CreateFontToHandle("メイリオ", 35 , 6 , DX_FONTTYPE_ANTIALIASING_EDGE , -1 , 1);
	Font28=CreateFontToHandle("メイリオ", 28 , 6 , DX_FONTTYPE_ANTIALIASING_EDGE , -1 , 1);


	//スタートの時の音をロード
	S_Pika_n=GetGraphHandle(MENU , SH_Pika_n);

	//音量変更
	ChangeVolumeSoundMem(100,S_Pika_n);


	//タイトルの音声をロード
	S_Main = GetGraphHandle(MENU , SH_Main);

}


//スタート画面の表示用関数--------------------------------------------------------------------------------------------------------------------------
int DrawStart(int *DS)
{
	static int i=100;
	static int F_n=0;

	//スキップ処理
	if(GetKey(KEY_INPUT_S)==1){
		StopSoundMem(S_Pika_n);
		DeleteSoundMem(S_Pika_n);
		PLAYMAINSOUND;	
		SetAlwaysRunFlag(FALSE) ;
		*DS=MAIN;
		return 0;
	}

	//まだ再生してなかったら
	if(F_n==FALSE){
		PlaySoundMem(S_Pika_n,DX_PLAYTYPE_BACK);
		//再生したにする
		F_n=TRUE;
	}


	//増やしていく
	if(i<255){
		i++;
	//透ける表示をする
	SetDrawBright(i,i,i);
	SetDrawBlendMode(DX_BLENDMODE_ALPHA,i);
	DrawGraph(100,50,G_Title,TRUE);
	SetDrawBright(255,255,255);
	SetDrawBlendMode(DX_BLENDMODE_NOBLEND,0);
	}
		

	//透ける表示が終ったら
	if(i==255){

		DrawGraph(100,50,G_Title,TRUE);
		DrawStringToHandle(200,350,"Please Click!!",C_White,Font35,C_Blue);
		
		if(GetMouse(MOUSE_LEFT)==1){

			StopSoundMem(S_Pika_n);
			DeleteSoundMem(S_Pika_n);
			PLAYMAINSOUND;	
			SetAlwaysRunFlag(FALSE) ;
			*DS=MAIN;
			return 0;
		}
	}

	*DS=START;
	return 0;
}

//メニュー表示用関数------------------------------------------------------------------------------------------------------------------------------
int DrawMain(int *DS)
{
	int F_Select=0;

	//	クリックしたのを取得
	F_Select=ClacDrawMenuTag(first , C_White , Font35);

	switch(F_Select){

		case 0:
			*DS=GAMEMODE;
			return 0;
		case 1:
			*DS=READ;
			return 0;
	}

	//タイトル表示
	DRAWTITLE;

	return 0;
}


//操作方法表示用関数----------------------------------------------------------------------------------

int DrawReadMe(int *DS)
{
	
	DrawStringToHandle(0,0,"操作方法",C_Red,Font35);

	//戻るButtonを表示
	if(DrawReturn()==1){

		*DS=MAIN;
	}

	return 0;
}


//ゲームモードを表示--------------------------------------------------------------------------------------------
int DrawGameMode(int *DS)
{
	int F_Select=0;
	int F_Select1=0;

	//クリックしたのを取得
	F_Select=ClacDrawMenuTag(second , C_White , Font28);
	F_Select1=ClacDrawMenuTag( third , C_White , Font35);

	switch(F_Select){

		case 0:
			*DS=NORMALMODE;
			return 0;
		case 1:
			*DS=BOOSTMODE;
			return 0;
	}

	switch(F_Select1){

		case 0:
			*DS=KIROKU;
			return 0;
		case 1:
			*DS=MAIN;
			return 0;
	}

	DRAWTITLE;
	
	*DS=GAMEMODE;
	return 0;
}


//記録を表示
int DrawKiroku(int *DS)
{

	//記録を保持する変数
	static  int data[10]={0};


	//まだロードしてなかったら
	if(data[9]==0){

		//データをロード
		LoadKiroku(data);

		if(CheckLoading()==0){

			return 1;
		}

	}

	//戻るボタンを表示
	if(DrawReturn()==1){

		*DS=GAMEMODE;
		return  0;
	}

	DrawStringToHandle(0,0, "きろく" , C_White , Font35 );


	//記録を表示
	for(int i=0; i<10 ;i++){

		DrawFormatStringToHandle( 50 , i*30+50  , C_White , Font28 ,"%2d位			%d行",i+1,data[i]);
	}



	return 0;
}